#include "SBullet.h"


CSBullet::CSBullet()
{
	position_.x = 100;
	position_.y = 300;

	velocity_.x = 0.5f;
	velocity_.y = 0.1f;

	sBulletShootStaus_ = SHOOT_STATUS;


	m0Bullet_ = new CM0Bullet();
	m15DownBullet_ = new CM15DownBullet();
	m15UpBullet_ = new CM15UpBullet();
	m30DownBullet_ = new CM30DownBullet();
	m30UpBullet_ = new CM30UpBullet();

	LoadSprites();
}


CSBullet::~CSBullet()
{
	if (m0Bullet_ != NULL)
		delete m0Bullet_;

	if (m15DownBullet_ != NULL)
		delete m15DownBullet_;

	if (m15UpBullet_ != NULL)
		delete m15UpBullet_;

	if (m30DownBullet_ != NULL)
		delete m30UpBullet_;

	if (m30UpBullet_ != NULL)
		delete m30UpBullet_;
}


void CSBullet::SetStartCoordinate(float x, float y)
{
	m0Bullet_->SetStartCoordinate(x, y);
	m15UpBullet_->SetStartCoordinate(x, y);
	m15DownBullet_->SetStartCoordinate(x, y);
	m30UpBullet_->SetStartCoordinate(x, y);
	m30DownBullet_->SetStartCoordinate(x, y);
}


void CSBullet::Render()
{
	m0Bullet_->Render();
	m15DownBullet_->Render();
	m15UpBullet_->Render();
	m30DownBullet_->Render();
	m30UpBullet_->Render();
}


void CSBullet::Update(DWORD deltaTime)
{
	if (sBulletShootStaus_ == SHOOT_0_RIGHT)
		Update0Right(deltaTime);

	if (sBulletShootStaus_ == SHOOT_0_LEFT)
		Update0Left(deltaTime);

	if (sBulletShootStaus_ == SHOOT_90_UP)
		Update90Up(deltaTime);

	if (sBulletShootStaus_ == SHOOT_90_DOWN)
		Update90Down(deltaTime);

	if (sBulletShootStaus_ == SHOOT_45_RIGHT_UP)
		Update45RightUp(deltaTime);

	if (sBulletShootStaus_ == SHOOT_45_RIGHT_DOWN)
		Update45RightDown(deltaTime);

	if (sBulletShootStaus_ == SHOOT_45_LEFT_UP)
		Update45LeftUp(deltaTime);

	if (sBulletShootStaus_ == SHOOT_45_LEFT_DOWN)
		Update45LeftDown(deltaTime);
}


void CSBullet::LoadSprites()
{

}


void CSBullet::UpdateKeyBoard(CInput* inputDevice)
{
	if (inputDevice->KeyPress(DIK_A))
	{
		SetStartCoordinate(START_COORDINATE_X, START_COORDINATE_Y);
	}
}


void CSBullet::Update0Right(DWORD deltaTime)
{
	m0Bullet_->Update0Right(deltaTime);
	m15DownBullet_->Update0Right(deltaTime);
	m15UpBullet_->Update0Right(deltaTime);
	m30DownBullet_->Update0Right(deltaTime);
	m30UpBullet_->Update0Right(deltaTime);
}


void CSBullet::Update0Left(DWORD deltaTime)
{
	m0Bullet_->Update0Left(deltaTime);
	m15DownBullet_->Update0Left(deltaTime);
	m15UpBullet_->Update0Left(deltaTime);
	m30DownBullet_->Update0Left(deltaTime);
	m30UpBullet_->Update0Left(deltaTime);
}


void CSBullet::Update90Up(DWORD deltaTime)
{
	m0Bullet_->Update90Up(deltaTime);
	m15DownBullet_->Update90Up(deltaTime);
	m15UpBullet_->Update90Up(deltaTime);
	m30DownBullet_->Update90Up(deltaTime);
	m30UpBullet_->Update90Up(deltaTime);
}


void CSBullet::Update90Down(DWORD deltaTime)
{
	m0Bullet_->Update90Down(deltaTime);
	m15DownBullet_->Update90Down(deltaTime);
	m15UpBullet_->Update90Down(deltaTime);
	m30DownBullet_->Update90Down(deltaTime);
	m30UpBullet_->Update90Down(deltaTime);
}


void CSBullet::Update45RightUp(DWORD deltaTime)
{
	m0Bullet_->Update45RightUp(deltaTime);
	m15DownBullet_->Update45RightUp(deltaTime);
	m15UpBullet_->Update45RightUp(deltaTime);
	m30DownBullet_->Update45RightUp(deltaTime);
	m30UpBullet_->Update45RightUp(deltaTime);
}


void CSBullet::Update45RightDown(DWORD deltaTime)
{
	m0Bullet_->Update45RightDown(deltaTime);
	m15DownBullet_->Update45RightDown(deltaTime);
	m15UpBullet_->Update45RightDown(deltaTime);
	m30DownBullet_->Update45RightDown(deltaTime);
	m30UpBullet_->Update45RightDown(deltaTime);
}


void CSBullet::Update45LeftUp(DWORD deltaTime)
{
	m0Bullet_->Update45LeftUp(deltaTime);
	m15DownBullet_->Update45LeftUp(deltaTime);
	m15UpBullet_->Update45LeftUp(deltaTime);
	m30DownBullet_->Update45LeftUp(deltaTime);
	m30UpBullet_->Update45LeftUp(deltaTime);
}


void CSBullet::Update45LeftDown(DWORD deltaTime)
{
	m0Bullet_->Update45LeftDown(deltaTime);
	m15DownBullet_->Update45LeftDown(deltaTime);
	m15UpBullet_->Update45LeftDown(deltaTime);
	m30DownBullet_->Update45LeftDown(deltaTime);
	m30UpBullet_->Update45LeftDown(deltaTime);
}